|
Date : 10 d�cembre 1991 Protection : MOT DE PASSE Programme : FACE to FACE Outils : SOFT-ICE V2.50 Fichier : FTF_VGA.EXE Temps pass� : 20 MINUTES Soci�t� : SOFTWORLD Divers : Origine : INDONESIE Num�ro : 156 Un fichier "trafiqu�". Probablement d'origine compact� par LZEXE comme le fichier FTF_MONO.EXE qui lui se d�compacte correctement. Ils ont trouv� "mon" astuce qui consiste � modifier les 4 lettres de LZ91 dans l'ent�te du fichier ( ce qui le rend ind�comprimable ). En fait pour �tre exact, chronologiquement c'est moi qui ai fini par trouver cette astuce bien apr�s en fouinant dans le header des fichier LZEXEt�s. Malheureusement ils sont all�s plus loin que moi en �crasant des informations vitales pour emp�cher le programme UNLZEXE de fonctionner. Voir ci-dessous: ftf_vga.exe SECTEUR : 000 DEC HEX 000 000 4D 5A FF 01 8C 00 00 00 07 00 64 14 FF FF 41 11 MZ�� d��A 016 010 00 04 00 00 8C 05 01 11 50 00 00 00 00 00 00 00 �P 032 020 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0D ###############. 048 030 23 28 43 29 20 53 4F 46 54 57 4F 52 4C 44 23 0D #(C) SOFTWORLD#. 064 040 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 00 ############### La protection elle-m�me est facile � contourner, il suffit de NOPer deux positions pour passer le code: CS=1BB5 CS:3338 3B46F4 CMP AX,[BP-0C] CS:333B 7503 JNZ 3340 ; NOP NOP ( 9090 ) CS:333D E92101 JMP 3461 CS:3340 BED007 MOV SI,07D0 Ci dessous FTF.COM qui fait le travail dans un fichier compact� comme d'habitude avec quelques am�liorations de cryptage ( voir le fichier UTILXOR.C ): ; PATCH POUR LE PROGRAMME FACE to FACE ; DETOURNEMENT DE L'INT 21 SOUS-FONCTION 2C ; ;****************************************************************************** ; ZONE A INITIALISER adr_ip1 equ 333Bh ; adresse dont le contenu est � modifier. anc_val equ 0375h ; Valeur d'origine � rechercher. nouv_val equ 9090h ; Nouvelle valeur. INT_DET equ 21h ; Le num�ro de l'INT que l'on veut utiliser. sous_fonction equ 2Ch ; Sous-fonction utilis�e. ;****************************************************************************** ; Zone commune ; non list�e car identique � tous mes patchs. ;------------------------------ PROGRAMME PERE ------------------------------ ; non list�e m�me raison. ;----------------------------- int d�tourn�e -------------------------------- int_entry proc far _int: pushf push ds push cx push bx push ax cmp ah,sous_fonction ; Sous - fonction de l'INT. jne loc_2 ; Jump if not equal mov cx,20 mov ax,sp incr: pop ds dec cx cmp cx,0 je s cmp word ptr ds:[adr_ip1],anc_val ; Si ok on patche. jnz incr mov word ptr ds:[adr_ip1],nouv_val ; On y place le patch. xor bx,bx mov ds,bx ; L'INT 21 n'est pas r�entrante, on ne peut donc pas se servir de ; la fonction 25h ( set int. vector ) mov bx,word ptr cs:data_9 ; Je remets manuellement mov ds:[INT_DET*4],bx ; en place le vecteur mov bx,word ptr cs:data_9+2 ; de l'INT d�tourn�e. mov ds:[INT_DET*4+2],bx s: mov sp,ax loc_2: pop ax pop bx pop cx pop ds popf jmp dword ptr cs:data_9 int_entry endp ;------------ REDUCTION DE LA PLACE OCCUPEE PAR LE PROGRAMME COM ------------ ; non list�e car idem. ;----------------------- PLACE RESERVEE POUR LA PILE ------------------------ ; non list�e. FREDDY |